package com.pan.admin.module.channel.service;

import com.pan.admin.module.channel.entity.LoanChannelFlowConfig;
import com.pan.admin.module.channel.entity.LoanChannelFlowConfigIPCityPO;
import com.pan.admin.module.channel.entity.LoanChannelFlowConfigIpOffModule;

import java.util.List;

/**
 * 渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))Service接口
 *
 * @author ts
 * @date 2023-09-27
 */
public interface LoanChannelFlowConfigService {

    /**
     * 根据ID获取列表渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     *
     * @param id 渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))主键
     * @return 渠道流程控制配置(动画 、 是否开启验证码 、 开启协议 、 隐私协议等等))
     */
    LoanChannelFlowConfig getById(Long id);

    /**
     * 查询渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))列表
     *
     * @param loanChannelFlowConfig 渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     * @return 渠道流程控制配置(动画 、 是否开启验证码 、 开启协议 、 隐私协议等等))集合
     */
    List<LoanChannelFlowConfig> list(LoanChannelFlowConfig loanChannelFlowConfig);

    /**
     * 新增渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     *
     * @param loanChannelFlowConfig 渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     * @return 结果
     */
    int insertLoanChannelFlowConfig(LoanChannelFlowConfig loanChannelFlowConfig);

    /**
     * 修改渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     *
     * @param loanChannelFlowConfig 渠道流程控制配置(动画、是否开启验证码、开启协议、隐私协议等等))
     * @return 结果
     */
    int updateLoanChannelFlowConfig(LoanChannelFlowConfig loanChannelFlowConfig);

    /**
     *  查询该渠道中的IP留资城市列表
     *
     *  @param  loanChannelId   渠道id
     *  @return List
     */
    List<LoanChannelFlowConfigIPCityPO> listIpCity(Long loanChannelId);

    /**
     *  添加改渠道中的IP留资城市
     *
     *  @param  loanChannelId   渠道id
     *  @param  areaCodes 地区编码集合
     */
    void batchInsertIpCity(Long loanChannelId, String areaCodes);

    /**
     *  查询该渠道中的IP屏蔽城市列表
     *
     *  @param  loanChannelId   渠道id
     *  @return List
     */
    List<LoanChannelFlowConfigIpOffModule> listIpOffModule(Long loanChannelId);

    /**
     *  添加改渠道中的IP屏蔽
     *
     *  @param  loanChannelId   渠道id
     *  @param  areaCodes 地区编码集合
     */
    void batchInsertIpOffModule(Long loanChannelId, String areaCodes);
}
